package br.com.jdcanado.gae.inforse.model;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;

import br.com.jdcanado.gae.inforse.controller.PMF;

public class UsuarioDAO {
	//static PersistenceManager pm = PMF.get().getPersistenceManager();
	public static void inserirUsuario(Usuario usuario){
		PersistenceManager pm = PMF.get().getPersistenceManager();
		try{		
			pm.makePersistent(usuario);
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, "Solicitação realizada!", "message");
			FacesContext.getCurrentInstance().addMessage(null, fm);
		}catch(Exception e){
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erroLogin");
			FacesContext.getCurrentInstance().addMessage(null, fm);
		}finally{
			pm.close();
		}
	}	
	
	public static boolean verificarUsuario(Usuario usuario){
		PersistenceManager pm = PMF.get().getPersistenceManager();
		
		List<Usuario> listaResultado = new ArrayList();
		Query query = pm.newQuery(Usuario.class);
		
		query.setFilter("operador == operadorLogin && senha == senhaLogin");
		
		query.declareParameters("String operadorLogin, String senhaLogin");
				
		try{
			listaResultado = (List<Usuario>) query.execute(usuario.getOperador(), usuario.getSenha());
			if(listaResultado.size() > 0){
				return true;
			}else{
				return false;
			}		
		}catch(Exception e){
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erroLogin");
			FacesContext.getCurrentInstance().addMessage(null, fm);
			return false;
		}finally{
			query.closeAll();
		}	
	}
	
	public static List<Usuario> consultarUsuarioByOperador(String operadorIn){
		PersistenceManager pm = PMF.get().getPersistenceManager();
		
		List<Usuario> listaUsuario = new ArrayList<Usuario>();
		
		Query query = pm.newQuery(Usuario.class);
		
		query.setFilter("operador == operadorIn");
		query.declareParameters("String operadorIn");
		
		try{
			listaUsuario = (List<Usuario>) query.execute(operadorIn);
			return listaUsuario;
		}catch(Exception e){
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erroLogin");
			FacesContext.getCurrentInstance().addMessage(null, fm);
			return null;
		}finally{
			query.closeAll();
		}
	}	
}
